/**
 * 给定数组，其得分为相邻两数乘积的最大值
 * 允许删除其中任意个数（至少留下2个），使得数组得分最大
 * 在这种操作下任意数均可相邻，直接排个序即可
 * 注意有负数。
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;

int N;
vector<llt> A;

llt proc(){
    if(2 == N) return A[0] * A[1];

    sort(A.begin(), A.end());
    
    llt ans = A[0] * A[1];
    ans = max(ans, A[N - 1] * A[N - 2]);
    return ans;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int nofkase; cin >> nofkase;
    while(nofkase--){
        cin >> N;
        A.assign(N, 0);
        for(auto & i : A) cin >> i;
        cout << proc() << endl;
    }
    return 0;
}